home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Interactive Reference Guide
/
C-C++ Interactive Reference Guide.iso
/
c_ref
/
csource3
/
183_01
/
compgm.c86
< prev
next >
Wrap
Text File
|
1984-06-23
|
2KB
|
46 lines
/* Communications Program for C86
by Earl C. Terwilliger Jr
Version 1.0 05-02-1983
*/
#include "stdio.h"
#define LF 10
#define PORT 0
#define TRUE 1
main() {
unsigned flags = 0;
struct regval { unsigned ax,bx,cx,dx,si,di,ds,es; };
struct regval srv,rrv;
srv.dx = PORT; /* RS232 port */
srv.ax = 0X005A; /* Initialize
Parms 300,E,1,7 */
sysint(20,&srv,&rrv); /* INT 14H */
while (TRUE) {
srv.ax = 0X0300; /* Return Rs232 status */
srv.dx = PORT;
sysint(20,&srv,&rrv); /* INT 14H */
while (rrv.ax & 0X0100) {
srv.ax = 0X0200; /* Receive a character */
srv.dx = PORT;
sysint(20,&srv,&rrv); /* INT 14H */
putchar(rrv.ax); /* Display a character */
srv.ax = 0X0300; /* Rs232 Status */
srv.dx = PORT;
sysint(20,&srv,&rrv); /* INT 14H */
}
srv.ax = 0X0100; /* Test Keyboard buffer */
flags = sysint(22,&srv,&rrv); /* INT 16H */
flags &= 0X0040; /* Mask out all but Z */
while (!flags) {
srv.ax = 0; /* Get a Keyboard char */
sysint(22,&srv,&rrv); /* INT 16H */
srv.ax = rrv.ax & 0X01FF; /* Character to send */
srv.ax |= 0X0100; /* Rs232 send function */
srv.dx = PORT;
sysint(20,&srv,&rrv); /* INT 14H */
srv.ax = 0X0100; /* Test Keyboard buffer */
flags = sysint(22,&srv,&rrv); /* INT 16H */
flags &= 0X0040; /* Mask out all but Z */
}
}
}